module Layouts where

import XMonad ( (|||), Full(Full), Tall(Tall) )

import XMonad.Hooks.DynamicLog (dynamicLogWithPP, xmobarProp, xmobarPP, shorten, PP(..))
import XMonad.Hooks.ManageDocks (avoidStruts, docks, manageDocks, ToggleStruts(..))
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.Minimize

import XMonad.Layout.ThreeColumns
import XMonad.Layout.NoBorders (smartBorders)
import XMonad.Layout.Minimize ( minimize )
import qualified XMonad.Layout.BoringWindows as BW
import XMonad.Layout.ResizableTile ( ResizableTall(ResizableTall) )
import XMonad.Layout.ResizableThreeColumns
    ( ResizableThreeCol(ResizableThreeColMid, ResizableThreeCol) )
import XMonad.Layout.MultiToggle ( (??), mkToggle, EOT(EOT) )
import XMonad.Layout.MultiToggle.Instances
    ( StdTransformers(NOBORDERS, FULL) )
import XMonad.Layout.BoringWindows ( boringWindows )
import XMonad.Layout.SubLayouts ( subTabbed )
import XMonad.Layout.WindowNavigation ( windowNavigation )

myLayout = minimize
    $ smartBorders
    $ mkToggle (FULL ?? NOBORDERS ?? EOT)
    $ avoidStruts
    $ windowNavigation
    $ subTabbed
    $ boringWindows
    $ tall ||| Full ||| resThreeCol ||| threeColMid
  where
    resThreeCol = ResizableThreeCol nmaster delta ratio []
    tall = ResizableTall nmaster delta ratio []
    threeColMid    = ResizableThreeColMid nmaster delta ratio []
    tiled          = Tall nmaster delta ratio
    nmaster        = 1     -- Default number of windows in the master pane
    ratio          = 1/2   -- Default proportion of screen occupied by master pane
    delta          = 1/100 -- Percent of screen to increment by when resizing panes
